﻿''' <summary>
''' Twitterの投稿(ステータス)を表現します。
''' </summary>
''' <remarks></remarks>
<Serializable()> _
Public Class TwitterStatus

    Public Sub New()
        _user = New TwitterUser()
    End Sub

    Private _statusID As Long
    ''' <summary>
    ''' ステータスの固有IDを取得または設定します。
    ''' </summary>
    ''' <value>固有ID</value>
    ''' <returns>固有ID</returns>
    ''' <remarks></remarks>
    Public Property StatusID() As Long
        Get
            Return _statusID
        End Get
        Set(ByVal value As Long)
            _statusID = value
        End Set
    End Property

    Private _createdAt As DateTime
    ''' <summary>
    ''' 投稿日時を取得または設定します。
    ''' </summary>
    ''' <value>投稿日時</value>
    ''' <returns>投稿日時</returns>
    ''' <remarks>投稿日時の取得が行えないため、実際には取得日時が返されます。</remarks>
    Public Property CreatedAt() As DateTime
        Get
            Return _createdAt
        End Get
        Set(ByVal value As DateTime)
            _createdAt = value
        End Set
    End Property

    Private _text As String
    ''' <summary>
    ''' 本文を取得または設定します。
    ''' </summary>
    ''' <value>本文</value>
    ''' <returns>本文</returns>
    ''' <remarks></remarks>
    Public Property Text() As String
        Get
            Return _text
        End Get
        Set(ByVal value As String)
            _text = value
        End Set
    End Property

    Private _source As String
    ''' <summary>
    ''' クライアント名を取得または設定します。
    ''' </summary>
    ''' <value>クライアント名</value>
    ''' <returns>クライアント名</returns>
    ''' <remarks></remarks>
    Public Property Source() As String
        Get
            Return _source
        End Get
        Set(ByVal value As String)
            _source = value
        End Set
    End Property

    Private _isFavorated As Boolean
    ''' <summary>
    ''' 投稿がお気に入りに登録されているかを取得または設定します。
    ''' </summary>
    ''' <value>登録されていればTrue、されていなければFalse</value>
    ''' <returns>登録されていればTrue、されていなければFalse</returns>
    ''' <remarks></remarks>
    Public Property IsFavorated() As Boolean
        Get
            Return _isFavorated
        End Get
        Set(ByVal value As Boolean)
            _isFavorated = value
        End Set
    End Property

    Private _replyStatusID As Long
    ''' <summary>
    ''' 返信先ステータスの固有IDを取得または設定します。
    ''' </summary>
    ''' <value>返信先ステータスの固有ID</value>
    ''' <returns>返信先ステータスの固有ID</returns>
    ''' <remarks></remarks>
    Public Property ReplyStatusID() As Long
        Get
            Return _replyStatusID
        End Get
        Set(ByVal value As Long)
            _replyStatusID = value
        End Set
    End Property

    Private _replyUserName As String
    ''' <summary>
    ''' 返信先のユーザー名を取得または設定します。
    ''' </summary>
    ''' <value>返信先のユーザー名</value>
    ''' <returns>返信先のユーザー名</returns>
    ''' <remarks></remarks>
    Public Property ReplyUserName() As String
        Get
            Return _replyUserName
        End Get
        Set(ByVal value As String)
            _replyUserName = value
        End Set
    End Property

    Private _user As TwitterUser
    ''' <summary>
    ''' 投稿したユーザーの情報を取得または設定します。
    ''' </summary>
    ''' <value>投稿したユーザーの情報</value>
    ''' <returns>投稿したユーザーの情報</returns>
    ''' <remarks></remarks>
    Public Property User() As TwitterUser
        Get
            Return _user
        End Get
        Set(ByVal value As TwitterUser)
            _user = value
        End Set
    End Property
End Class
